﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YasharEl.Infrastructure.EntityModel
{
    /// <summary>
    /// The date time provider returns date and time information.
    /// The date time provider can be used to abstract access to the <see cref="DateTime"/> class to support
    /// better testability by mocking e.g. <see cref="DateTime.Now"/>.
    /// </summary>
    public interface IDateTimeProvider
    {
        string StandartFormat { get; }
        bool IsUseUtc { get; }

        /// <summary>
        /// Gets a <see cref="DateTime"/> representing now
        /// </summary>
        DateTime Now { get; }

        /// <summary>
        /// Gets a <see cref="DateTime"/> representing today
        /// </summary>
        DateTime Today { get; }

        DateTime Parse(string dateTimeString);

        string Parse(DateTime date);

        DateTime CalibrateToCurrentSystem(DateTime notCalibratedValue);
    }
}
